<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of user
 *
 * @author link2
 */
class User extends ADM_Controller {

    //put your code here

    public function __construct() {
        parent::__construct();
        $this->load->language('user/user_view');
        $this->load->model('user/user_model');
        $this->load->library('permissions');
        $this->load->library('tank_auth');
        $this->checar_metodo(uri_string());
    }

    function index() {
        $v_dados = array();
        $v_dados['usuarios'] = array();
        $b_consultar = $this->user_model->lista_usuarios();
        if ($b_consultar != null) {
            foreach ($b_consultar as $k => $v) {
                $v_dados['usuarios'][$k]['id'] = $v->id;
                $v_dados['usuarios'][$k]['user_type_id'] = $v->user_type_id;
                $v_dados['usuarios'][$k]['username'] = $v->username;
                $v_dados['usuarios'][$k]['password'] = $v->password;
                $v_dados['usuarios'][$k]['email'] = $v->email;
                $v_dados['usuarios'][$k]['activated'] = $v->activated;
                $v_dados['usuarios'][$k]['banned'] = $v->banned;
                $v_dados['usuarios'][$k]['ban_reason'] = $v->ban_reason;
                $v_dados['usuarios'][$k]['new_password_key'] = $v->new_password_key;
                $v_dados['usuarios'][$k]['new_password_requested'] = $v->new_password_requested;
                $v_dados['usuarios'][$k]['new_email'] = $v->new_email;
                $v_dados['usuarios'][$k]['new_email_key'] = $v->new_email_key;
                $v_dados['usuarios'][$k]['last_ip'] = $v->last_ip;
                $v_dados['usuarios'][$k]['last_login'] = $v->last_login;
                $v_dados['usuarios'][$k]['created'] = $v->created;
                $v_dados['usuarios'][$k]['modified'] = $v->modified;
                $v_dados['usuarios'][$k]['department'] = $v->department;
                $v_dados['usuarios'][$k]['l_activated'] = ($v->activated == 0 ? $this->lang->line('lang_activated_1') : $this->lang->line('lang_activated_0'));
            }
        }
        $v_dados['link_user_change'] = $this->permissions->get_url('user_user_change');
        $v_dados['link_user_permission'] = $this->permissions->get_url('user_user_permission');
        $v_dados = $this->lang->multi_line($v_dados);
        $this->parser->parse_cms('user_index_view', $v_dados);
    }

    function activated() {
        $activated = ($this->input->post('value') == 1 ? 0 : 1);
        $b_alterar = $this->user_model->alterar_valor_campo($this->input->post('id'), 'activated', $activated);
        $v_dados = array();
        $v_dados['status'] = $activated;
        $v_dados['title'] = ($activated == 0 ? $this->lang->line('lang_activated_1') : $this->lang->line('lang_activated_0'));
        if ($b_alterar === TRUE) {
            $v_dados['cod'] = 999;
            $v_dados['msg'] = $this->lang->line('lang_activated_success' . 'AQUI');
            $v_dados['header'] = $this->lang->line('lang_header_activated_success');
        } else {
            $v_dados['cod'] = 111;
            $v_dados['msg'] = $this->lang->line('lang_activated_warning');
            $v_dados['header'] = $this->lang->line('lang_header_activated_warning');
        }
        echo json_encode($v_dados);
    }

    function change($_id_usuario = null) {
        $option = array();
        foreach ($this->user_model->list_users_type() as $key => $value) {
            $option[$value->id] = $value->department;
        }
        $v_dados = array();
        $v_dados['id'] = '';
        $v_dados['user_type_id'] = form_dropdown($this->lang->line('lang_user_type_id'), $option);
        $v_dados['username'] = '';
        $v_dados['password'] = '';
        $v_dados['email'] = '';
        $v_dados['ban_reason'] = '';
        $v_dados['new_password_key'] = '';
        $v_dados['new_password_requested'] = '';
        $v_dados['new_email'] = '';
        $v_dados['new_email_key'] = '';
        $v_dados['last_ip'] = '';
        $v_dados['last_login'] = '';
        $v_dados['created'] = '';
        $v_dados['modified'] = '';

        if ($_id_usuario != null) {
            $_consultar = $this->user_model->get_usuario($_id_usuario);
            $v_dados['id'] = $_consultar->id;
            $v_dados['user_type_id'] = form_dropdown($this->lang->line('lang_user_type_id'), $option, $_consultar->user_type_id);
            $v_dados['username'] = $_consultar->username;
            $v_dados['password'] = $_consultar->password;
            $v_dados['email'] = $_consultar->email;
            $v_dados['ban_reason'] = $_consultar->ban_reason;
            $v_dados['new_password_key'] = $_consultar->new_password_key;
            $v_dados['new_password_requested'] = $_consultar->new_password_requested;
            $v_dados['new_email'] = $_consultar->new_email;
            $v_dados['new_email_key'] = $_consultar->new_email_key;
            $v_dados['last_ip'] = $_consultar->last_ip;
            $v_dados['last_login'] = formatarData($_consultar->last_login, array('formato' => 'd/m/Y H:i:s'));
            $v_dados['created'] = formatarData($_consultar->created, array('formato' => 'd/m/Y H:i:s'));
            $v_dados['modified'] = formatarData($_consultar->modified, array('formato' => 'd/m/Y H:i:s'));
        }
        $v_dados['link_user_gravar'] = $this->permissions->get_url('user_user_salva_user');
        $v_dados = $this->lang->multi_line($v_dados);
        $this->parser->parse_cms('user_change_view', $v_dados);
    }

    function salva_user() {
        $v_dados = array();
        $_dados = $this->input->post();
        $_campos = explode(',', 'id,user_type_id,username,password,email,activated,banned,ban_reason,new_password_key,new_password_requested,new_email,new_email_key,last_ip,last_login,created,modified');
        unset($_dados['id']);
        $v_dados = $_dados;
        foreach ($_dados as $key => $value) {
            if (array_search($key, $_campos)) {
                $v_dados[] = 'aaaaaaaaaaaaaaaaaaaaaa';
                if ($key == 'password') {
                    $hasher = new PasswordHash(PHPASS_HASH_STRENGTH, PHPASS_HASH_PORTABLE);
                    $hashed_password = $hasher->HashPassword($_campos);
                    $v_dados[$key] = $value;
                    $v_dados[$key . '_crypt'] = $hashed_password;
                    $this->user_model->alterar_valor_campo($this->input->post('id'), $key, $hashed_password);
                } else {
                    $v_dados[$key] = $value;
                    $this->user_model->alterar_valor_campo($this->input->post('id'), $key, $value);
                }
            }
        }
        $v_dados['cod'] = 999;
        $v_dados['msg'] = $this->lang->line('lang_success');
        $v_dados['header'] = $this->lang->line('lang_header_activated_success');
        echo json_encode($v_dados);
    }

    function permission($_id) {
        $v_dados ['tabs'] = array();
        /// Todos modulos disponíveis + permissao
        foreach ($this->user_model->listar_modulos() as $value1) {
            //$this->load->add_module($value1->nome);
            $this->load->language($value1->nome . '/menu_' . $value1->nome);
            $v_dados['tabs'][$value1->modulo_id]['modulo_id'] = $value1->modulo_id;
            $v_dados['tabs'][$value1->modulo_id]['nome'] = $this->lang->line('lang_' . $value1->nome);
            $v_dados['divs'][$value1->modulo_id]['modulo_id'] = $value1->modulo_id;
            $v_dados['divs'][$value1->modulo_id]['seq1'] = array();
            $v_dados['divs'][$value1->modulo_id]['seq2'] = array();
            $v_dados['divs'][$value1->modulo_id]['id'] = $_id;

            $consultar = $this->user_model->listar_modulos_status($value1->modulo_id);

            if ($consultar != null) {
                foreach ($consultar as $key => $value2) {

                    $permissao = $this->user_model->get_permissao($_id, $value2->rules_id);

                    if ($permissao != null) {
                        $v_dados['divs'][$value1->modulo_id]['seq1'][$key]['value'] = $value2->rules_id;
                        $v_dados['divs'][$value1->modulo_id]['seq1'][$key]['lang_nome'] = $this->lang->line('lang_' . $value2->function);
                    } else {
                        $v_dados['divs'][$value1->modulo_id]['seq2'][$key]['value'] = $value2->rules_id;
                        $v_dados['divs'][$value1->modulo_id]['seq2'][$key]['lang_nome'] = $this->lang->line('lang_' . $value2->function);
                    }
                }
            }
        }

        $consultar = $this->user_model->get_usuario($_id);

        $v_dados['id'] = $_id;
        $v_dados['username'] = $consultar->username;
        $v_dados['email'] = $consultar->email;
        $v_dados['link_index'] = $this->permissions->get_url('settings_settings_index');
        $v_dados['link_user_change'] = $this->permissions->get_url('user_user_change');
        $v_dados['link_user_save'] = $this->permissions->get_url('user_user_save');

        //pre($v_dados);

        $v_dados = $this->lang->multi_line($v_dados);

        $this->parser->parse_cms('user_permission_view', $v_dados);
    }

    function save($_id, $_modulo_id) {
        $this->user_model->deletar_permissoes($_modulo_id, $_id);
        $_post = $this->input->post();
        $multiselect = $_post["multiselect"];
        //pre($multiselect);
        $insert = array();

        if (count($multiselect) > 0) {
            foreach ($multiselect as $valor) {
                //pre($valor);
                if (count($valor) > 0) {
                    foreach ($valor as $key) {
                        if ($key != 'null') {
                            $insert['users_rules_id'] = $key;
                            $insert['users_id'] = $_id;
                            $insert['ip'] = $this->input->ip_address();
                            //pre($insert);
                            $this->user_model->inserir_permissoes($insert);
                        }
                    }
                }
            }
        }
        $v_dados = array();
        $v_dados['cod'] = 999;
        $v_dados['msg'] = $this->lang->line('lang_msg_submit_success');
        $v_dados['header'] = $this->lang->line('lang_header_submit_success');

        echo json_encode($v_dados);
    }

}